# encoding: utf-8
class DespesasController < TransacoesController
	include SearchHelper

	before_filter lambda { load_conta(Despesa) }, :only => [:new, :create]
	before_filter :load_despesa, :only => [ :delete, :destroy, :edit, :update ]
	
	#
	# get :index
	def index
		@despesas = current_usuario.despesas
		@filtro = FiltroDespesas.new(:periodo => Date.today)
	end

	#
	# get :filtrar
	def filtrar
		@filtro = FiltroDespesas.new(params[:filtro])
		
		@despesas = Despesa.listar(current_usuario, @filtro.conta_id, @filtro.periodo)

		render :index
	end

	#
	# get :new
	def new
		@despesa = Despesa.new
	end
	
	#
	# post :create
	def create
		@despesa = Despesa.new(params[:despesa])
		@despesa.usuario = current_usuario
#		@despesa.quitada = (@despesa.data <= Date.today)

		if @despesa.save
			redirect_to new_despesa_path, :notice => "Despesa registrada com sucesso"
		else
			render :new
		end
	end
	
	#
	# put :update
	def update
		if @despesa.update_attributes(params[:despesa])
			redirect_to despesas_path, :notice => "Despesa alterada com sucesso"
		else
			render :edit
		end	
	end
	
	#
	# delete :destroy
	def destroy
		if @despesa.destroy
			redirect_to despesas_path, :notice => "Despesa excluída com sucesso"
		else
			render :delete
		end
	end
	
	private
	
	#
	#	
	def load_despesa
		begin
			@despesa = Despesa.find(params[:id])
			
			unless @despesa.usuario.eql? current_usuario
				redirect_to despesas_path, :alert => "Operação inválida" and return
			end
		rescue ActiveRecord::RecordNotFound
			redirect_to despesas_path, :alert => "Operação inválida" and return
		end
	end
end
